﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DAPuntoTopografico : Base
    {
        /// <summary>
        /// Método devuelve la lista de punto topográficos
        /// </summary>
        /// <returns></returns>
        public List<PuntoTopografico> ListarPuntoTopografico()
        {
            return this.Context.PuntoTopografico.ToList();
        }
        /// <summary>
        /// Método insertar un nuevo punto topográfico
        /// </summary>
        /// <param name="puntotopografico"></param>
        /// <returns></returns>
        public int InsertarPuntoTopografico(PuntoTopografico puntotopografico)
        {
            this.Context.PuntoTopografico.AddObject(puntotopografico);
            this.Context.SaveChanges();
            return puntotopografico.CodigoPuntoTopografico;
        }
        /// <summary>
        /// Método modificar un punto topográfico
        /// </summary>
        /// <param name="puntotopografico"></param>
        public void ModificarPuntoTopografico(PuntoTopografico puntotopografico)
        {
            this.Context.PuntoTopografico.Attach(puntotopografico);
            this.Context.ObjectStateManager.ChangeObjectState(puntotopografico, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método eliminar un punto topográfico
        /// </summary>
        /// <param name="puntotopografico"></param>
        public void EliminarPuntoTopografico(PuntoTopografico puntotopografico)
        {
            this.Context.PuntoTopografico.Attach(puntotopografico);
            this.Context.ObjectStateManager.ChangeObjectState(puntotopografico, EntityState.Deleted);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método devuelve un punto topográfico por codigo
        /// </summary>
        /// <param name="codigoPuntoTopografico"></param>
        /// <returns></returns>
        public PuntoTopografico ObtenerPuntoTopografico(int codigoPuntoTopografico)
        {
            return this.Context.PuntoTopografico.Where(x => x.CodigoPuntoTopografico.Equals(codigoPuntoTopografico)).FirstOrDefault();
        }
        /// <summary>
        /// Método listar punto topográfico por nombre
        /// </summary>
        /// <param name="nombrePuntoTopografico"></param>
        /// <returns></returns>
        public List<PuntoTopografico> ListarPuntoTopograficoPorNombre(string nombrePuntoTopografico)
        {
            return this.Context.PuntoTopografico.Where(x => nombrePuntoTopografico.ToUpper().Equals(nombrePuntoTopografico.ToUpper())).ToList();
        }

    }
}
